<?php
/**
 * 权限模型
 * 
 * @package ews
 * @ews Enterprise WorkShop
 * @version 1.0 alpha
 * @since 2011-05-31
 * @author chenyan
 */

class flagModel extends model
{
	/**************************************************************************
	 * 返回 值说明
	 * 1.返回的数组（flag）说明
	 * 		  flag_id					权限ID						(int)
	 * 		  name						权限名称						(string)
	 * 		  flag_user_edit			添加/编辑/删除用户权限		(int)
	 * 		  flag_flag_edit			添加/编辑/删除用户组权限		(int)
	 *	 	  flag_group_create			添加小组权限					(int)
	 * 		  flag_knowledge_create		添加知识权限					(int)
	 * 		  flag_knowledge_delete		删除知识权限					(int)
	 * 		  flag_work_create			创建工作权限					(int)
	 * 		  flag_todo_create			创建待办权限					(int)
	 * 
	 * 2.若返回值为操作是否成功	1：成功      0或则负数：失败
	 **************************************************************************/
	
	/**
	 * 添加权限
	 * @param string $name					权限名称
	 * @param int $flag_user_edit			添加/编辑/删除用户权限
	 * @param int $flag_flag_edit			添加/编辑/删除用户组权限
	 * @param int $flag_group_create		添加小组权限
	 * @param int $flag_knowledge_create	添加知识权限
	 * @param int $flag_knowledge_delete	删除知识权限
	 * @param int $flag_work_create			创建工作权限
	 * @param int $flag_todo_create			创建待办权限
	 * 
	 * @return int 							新插入权限ID
	 */
	public function add($name,$flag_user_edit=0,$flag_flag_edit=0,$flag_group_create=0,$flag_knowledge_create=0,
						$flag_knowledge_delete=0,$flag_work_create=0,$flag_todo_create=0){
		
		$data = array('name' => $name, 'flag_user_edit' => $flag_user_edit, 'flag_flag_edit' => $flag_flag_edit,
				'flag_group_create'=>$flag_group_create,'flag_knowledge_create'=>$flag_knowledge_create,
				'flag_knowledge_delete'=>$flag_knowledge_delete,'flag_work_create'=>$flag_work_create,
				'flag_todo_create'=>$flag_todo_create);
		$id = DB::insert('flag', $data);
		return $id;
	}
	
	/**
	 * 删除权限
	 * @param int $flag_id	权限ID
	 * 
	 * @return  			1:成功  0:失败
	 */
	public function delete($flag_id){
		$condition = "flag_id=$flag_id";
		$row = DB::delete('flag',$condition);
		if($row>0) return 1;
		else return 0;
	}
	
	/**
	 * 修改权限
	 * @param int $flag_id					权限ID
	 * @param string $name					权限名称
	 * @param int $flag_user_edit			添加/编辑/删除用户权限
	 * @param int $flag_flag_edit			添加/编辑/删除用户组权限
	 * @param int $flag_group_create		添加小组权限
	 * @param int $flag_knowledge_create	添加知识权限
	 * @param int $flag_knowledge_delete	删除知识权限
	 * @param int $flag_work_create			创建工作权限
	 * @param int $flag_todo_create			创建待办权限
	 * 
	 * @return  							1:成功  0:失败
	 */
	public function modify($flag_id,$name,$flag_user_edit=0,$flag_flag_edit=0,$flag_group_create=0,$flag_knowledge_create=0,
						$flag_knowledge_delete=0,$flag_work_create=0,$flag_todo_create=0){
							
		$data = array('name' => $name, 'flag_user_edit' => $flag_user_edit, 'flag_flag_edit' => $flag_flag_edit,
				'flag_group_create'=>$flag_group_create,'flag_knowledge_create'=>$flag_knowledge_create,
				'flag_knowledge_delete'=>$flag_knowledge_delete,'flag_work_create'=>$flag_work_create,
				'flag_todo_create'=>$flag_todo_create);
		$condition = "flag_id=$flag_id";
		$row = DB::update('flag',$data,$condition);
		if($row>0) return 1;
		else return 0;
	}
	
	/**
	 * 设置权限名称
	 * @param int $flag_id					权限ID
	 * @param string $name					权限名称
	 * 
	 * @return  							1:成功  0:失败
	 */
	public function set_name($flag_id,$name){
		$data = array('name' => $name);
		$condition = "flag_id=$flag_id";
		$row = DB::update('flag',$data,$condition);
		if($row>0) return 1;
		else return 0;
	}
	
	/**
	 * 根据权限ID获取权限数组
	 * @param int $flag_id					权限ID
	 * 
	 * @return 一维数组
	 */
	public function get_flag_by_flag_id($flag_id){
		$row = DB::fetchOne("SELECT * FROM ".DB::table('flag')." WHERE flag_id = $flag_id");
		if(count($row) == 0){
			return array();
		}
		return $row;
	}
	
	/**
	 * 获取所有权限
	 * 
	 * @return 二维数组
	 */
	public function get_flags(){
		$row = DB::fetchOne("SELECT count(*) as num FROM ".DB::table('flag'));
		if($row['num']==0) return array();
		$r = DB::fetchArray("SELECT * FROM ".DB::table('flag'));
		return $r;
	}
	
	/**
	 * 获取所有权限个数
	 * 
	 * @return int 权限个数
	 */
	public function get_flag_count(){
		$row = DB::fetchOne("SELECT count(*) as num FROM ".DB::table('flag'));
		return $row['num'];
	}
}
?>